


#ifndef PROGMEM
    #ifdef ARDUINO

        #include <Arduino.h>

    #else

        #define PROGMEM

    #endif
#endif

#include "oled_basic_init_sequence.hpp"

namespace  oled_basic {

    const uint8_t _init_sequence_for_ssd1316_4_wire_spi[25] PROGMEM = {
        0xae, /*display off*/
        0x00, /*set lower column address*/
        0x10, /*set higher column address*/
        0x40, /*set display start line*/
        0xb0, /*set page address*/
        0x81, /*contract control*/
        0xc5, /*128*/
        0xa1, /*set segment remap 0XA0*/
        0xa6,
        0xa8, /*multiplex ratio*/
        0x1f, /*duty = 1/32*/
        0xc0, /*Com scan direction 0XC0 */
        0xd3, /*set display offset*/
        0x00, /* 0x20 */
        0xd5, /*set osc division*/
        0x80,
        0xd9, /*set pre-charge period*/
        0x22, /*0x22*/
        0xda, /*set COM pins*/
        0x12,
        0xdb, /*set vcomh*/
        0x20,
        0x8d,
        0x15, /* Set_Charge_Pump 0x14:9v; 0x15 7.5v */
        0xaf, /*display on*/
    };


    const uint8_t _init_sequence_for_ssd1306_2_wire_i2c[23] PROGMEM = {
        0xAE,  // 关闭显示
        0xD5,  // 设置显示时钟分频比/振荡器频率
        0x80,
        0xA8,  // 设置多路复用率
        0x3F,
        0xD3,  // 设置显示偏移
        0x00,
        0x40,  // 设置显示开始行
        0xA1,  // 设置左右方向，0xA1正常 0xA0左右反置
        0xC8,  // 设置上下方向，0xC8正常 0xC0上下反置
        0xDA,  // 设置COM引脚硬件配置
        0x12,
        0x81,  // 设置对比度控制
        0xCF,
        0xD9,  // 设置预充电周期
        0xF1,
        0xDB,  // 设置VCOMH取消选择级别
        0x30,
        0xA4,  // 设置整个显示打开/关闭
        0xA6,  // 设置正常/倒转显示
        0x8D,  // 设置充电泵
        0x14,
        0xAF,  // 开启显示
    };

}  // namespace oled_basic